unit DMEstoque;

interface

uses
  SysUtils, Classes, DBXpress, DB, SqlExpr, Provider, Dialogs, Windows,
  Inifiles, DBClient, DBLocal, DBLocalS, Forms, DBCtrls, DbGrids, StdCtrls,
  Graphics, Mask, Controls, ExtCtrls, UClasseGeral,DMGeral, DBTables,
  FMTBcd,RecError, SimpleDS, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  ZSqlUpdate, ZStoredProcedure;

type
  TDtMEstoque = class(TDataModule)
    ZEntrada_Documento: TZQuery;
    ZEntrada_Produtos: TZQuery;
    ZUpdateEnd: TZUpdateSQL;
    ZUpdateEnp: TZUpdateSQL;
    ZEntrada_DocumentoEND_IDFDOCUMENTO: TIntegerField;
    ZEntrada_DocumentoEND_DOCUMENTO: TStringField;
    ZEntrada_DocumentoEND_DATAENTRADA: TDateField;
    ZEntrada_DocumentoEND_DATAEMISSAO: TDateField;
    ZEntrada_DocumentoEND_EMPRESACODIGO: TSmallintField;
    ZEntrada_DocumentoEND_CFOPCODIGO: TStringField;
    ZEntrada_DocumentoEND_PEDIDO: TStringField;
    ZEntrada_DocumentoEND_LANCAMENTO: TStringField;
    ZEntrada_DocumentoEND_CANCELADO: TStringField;
    ZEntrada_DocumentoEND_CTRLINC: TStringField;
    ZEntrada_DocumentoEND_PESSOAIDF: TIntegerField;
    ZEntrada_DocumentoEND_USUARIO: TStringField;
    ZEntrada_DocumentoEND_DATAREG: TDateTimeField;
    ZEntrada_DocumentoEND_USUALTER: TStringField;
    ZEntrada_DocumentoEND_DATAALTER: TDateTimeField;
    ZEntrada_ProdutosENP_IDFDOCUMENTO: TIntegerField;
    ZEntrada_ProdutosENP_SEQITEMDOCUM: TSmallintField;
    ZEntrada_ProdutosENP_EMPRESACODIGO: TSmallintField;
    ZEntrada_ProdutosENP_IDFPRODUTO: TIntegerField;
    ZEntrada_ProdutosENP_QUANTIDADE: TFloatField;
    ZEntrada_ProdutosENP_PRECOCOMPRA: TFloatField;
    ZEntrada_ProdutosENP_PRECOCUSTO: TFloatField;
    ZEntrada_ProdutosENP_PRECOVENDA: TFloatField;
    ZEntrada_ProdutosENP_PRECOATACADO: TFloatField;
    ZEntrada_ProdutosENP_VALIDADE: TDateField;
    ZEntrada_ProdutosENP_LOTE: TIntegerField;
    ZEntrada_ProdutosENP_CANCELADO: TStringField;
    ZEntrada_ProdutosENP_DATHORA: TDateTimeField;
    ZEntrada_ProdutosENP_SITCOD: TStringField;
    ZEntrada_ProdutosENP_IPICOD: TStringField;
    ZEntrada_ProdutosENP_PISCOFINS: TStringField;
    ZEntrada_ProdutosENP_PROMOCAO: TStringField;
    ZEntrada_ProdutosENP_ATUALIZAPRECOS: TStringField;
    ZEntrada_ProdutosNFI_IDFNOTA: TIntegerField;
    ZEntrada_ProdutosCODIGO: TStringField;
    ZEntrada_ProdutosDESCRICAO: TStringField;
    ZEntrada_ProdutosCONTROLE: TStringField;
    ZQuerySaiProdutos: TZQuery;
    ZNotasFiscais: TZQuery;
    ZUpSaiProdutos: TZUpdateSQL;
    ZUpSaiServicos: TZUpdateSQL;
    ZQuerySaiServicos: TZQuery;
    CDS_ENTRADA_DOCUMENTO: TClientDataSet;
    CDS_ENTRADA_PRODUTO: TClientDataSet;
    DSP_ENTRADA_DOCUMENTO: TDataSetProvider;
    DSP_ENTRADA_PRODUTO: TDataSetProvider;
    CDS_ESTOQUE_SERIAL: TClientDataSet;
    DSP_ESTOQUE_SERIAL: TDataSetProvider;
    ZEstoque_Serial: TZQuery;
    ZUpdateESS: TZUpdateSQL;
    CDS_ESTOQUE_SERIALESS_IDFPRODUTO: TIntegerField;
    CDS_ESTOQUE_SERIALESS_IDFEMPRESA: TIntegerField;
    CDS_ESTOQUE_SERIALESS_SERIAL: TStringField;
    CDS_ESTOQUE_SERIALESS_LOCAL: TStringField;
    CDS_ESTOQUE_SERIALESS_SALDO: TFloatField;
    CDS_ESTOQUE_SERIALESS_DOCENT: TIntegerField;
    CDS_ENTRADA_PRODUTOENP_IDFDOCUMENTO: TIntegerField;
    CDS_ENTRADA_PRODUTOENP_SEQITEMDOCUM: TSmallintField;
    CDS_ENTRADA_PRODUTOENP_EMPRESACODIGO: TSmallintField;
    CDS_ENTRADA_PRODUTOENP_IDFPRODUTO: TIntegerField;
    CDS_ENTRADA_PRODUTOENP_QUANTIDADE: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PRECOCOMPRA: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PRECOCUSTO: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PRECOVENDA: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PRECOATACADO: TFloatField;
    CDS_ENTRADA_PRODUTOENP_VALIDADE: TDateField;
    CDS_ENTRADA_PRODUTOENP_LOTE: TIntegerField;
    CDS_ENTRADA_PRODUTOENP_CANCELADO: TStringField;
    CDS_ENTRADA_PRODUTOENP_DATHORA: TDateTimeField;
    CDS_ENTRADA_PRODUTOENP_SITCOD: TStringField;
    CDS_ENTRADA_PRODUTOENP_IPICOD: TStringField;
    CDS_ENTRADA_PRODUTOENP_PISCOFINS: TStringField;
    CDS_ENTRADA_PRODUTOENP_PROMOCAO: TStringField;
    CDS_ENTRADA_PRODUTOENP_ATUALIZAPRECOS: TStringField;
    CDS_ENTRADA_PRODUTONFI_IDFNOTA: TIntegerField;
    CDS_ENTRADA_PRODUTOCODIGO: TStringField;
    CDS_ENTRADA_PRODUTODESCRICAO: TStringField;
    CDS_ENTRADA_PRODUTOCONTROLE: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_IDFDOCUMENTO: TIntegerField;
    CDS_ENTRADA_DOCUMENTOEND_DOCUMENTO: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_DATAENTRADA: TDateField;
    CDS_ENTRADA_DOCUMENTOEND_DATAEMISSAO: TDateField;
    CDS_ENTRADA_DOCUMENTOEND_EMPRESACODIGO: TSmallintField;
    CDS_ENTRADA_DOCUMENTOEND_CFOPCODIGO: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_PEDIDO: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_LANCAMENTO: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_CANCELADO: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_CTRLINC: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_PESSOAIDF: TIntegerField;
    CDS_ENTRADA_DOCUMENTOEND_USUARIO: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_DATAREG: TDateTimeField;
    CDS_ENTRADA_DOCUMENTOEND_USUALTER: TStringField;
    CDS_ENTRADA_DOCUMENTOEND_DATAALTER: TDateTimeField;
    ZEntrada_Serial: TZQuery;
    ZUpdateENS: TZUpdateSQL;
    CDS_ENTRADA_SERIAL: TClientDataSet;
    DSP_ENTRADA_SERIAL: TDataSetProvider;
    CDS_ENTRADA_SERIALENS_IDFDOCUMENTO: TIntegerField;
    CDS_ENTRADA_SERIALENS_IDFITEMDOCUM: TSmallintField;
    CDS_ENTRADA_SERIALENS_SERIAL: TStringField;
    CDS_ENTRADA_SERIALENS_QUANTIDADE: TFloatField;
    CDS_ENTRADA_SERIALENS_EMPRESACODIGO: TSmallintField;
    CDS_ENTRADA_SERIALENS_IDFPRODUTO: TIntegerField;
    CDS_ENTRADA_SERIALENS_CANCELADO: TStringField;
    CDS_ESTOQUE_PRODUTO: TClientDataSet;
    ZEstoque_Produto: TZQuery;
    ZUpdateESP: TZUpdateSQL;
    DSP_ESTOQUE_PRODUTO: TDataSetProvider;
    CDS_ESTOQUE_EMPRESA: TClientDataSet;
    ZEstoque_Empresa: TZQuery;
    ZUpdateESE: TZUpdateSQL;
    DSP_ESTOQUE_EMPRESA: TDataSetProvider;
    CDS_ESTOQUE_EMPRESAESE_IDFCOD: TIntegerField;
    CDS_ESTOQUE_EMPRESAESE_EMPCOD: TSmallintField;
    CDS_ESTOQUE_EMPRESAESE_PRECOM: TFloatField;
    CDS_ESTOQUE_EMPRESAESE_PRECUS: TFloatField;
    CDS_ESTOQUE_EMPRESAESE_PREVEN: TFloatField;
    CDS_ESTOQUE_EMPRESAESE_PREATA: TFloatField;
    CDS_ESTOQUE_EMPRESAESE_LOCAL: TStringField;
    CDS_ESTOQUE_EMPRESAESE_SITCOD: TStringField;
    CDS_ESTOQUE_EMPRESAESE_IPICOD: TStringField;
    CDS_ESTOQUE_EMPRESAESE_PISCOFINS: TStringField;
    CDS_ESTOQUE_EMPRESAESE_PROMOCAO: TStringField;
    CDS_ESTOQUE_EMPRESAESE_SALDO: TFloatField;
    CDS_ESTOQUE_EMPRESAESE_QTDATACADO: TFloatField;
    CDS_ESTOQUE_EMPRESAESE_RESERVADO: TFloatField;
    CDS_SAIDA_PRODUTOS: TClientDataSet;
    CDS_SAIDA_SERVICOS: TClientDataSet;
    CDS_NOTAS_FISCAIS: TClientDataSet;
    DSP_SAIDA_PRODUTOS: TDataSetProvider;
    DSP_SAIDA_SERVICOS: TDataSetProvider;
    DSP_NOTAS_FISCAIS: TDataSetProvider;
    CDS_NOTAS_FISCAISNFI_IDF: TIntegerField;
    CDS_NOTAS_FISCAISNFI_CONDICOESPAGAMENTO: TStringField;
    CDS_NOTAS_FISCAISNFI_EMISSAO: TDateTimeField;
    CDS_NOTAS_FISCAISNFI_DATAENTRADASAIDA: TDateField;
    CDS_NOTAS_FISCAISNFI_HORAENTRADASAIDA: TTimeField;
    CDS_NOTAS_FISCAISNFI_TIPONOTA: TStringField;
    CDS_NOTAS_FISCAISNFI_TIPOFRETE: TStringField;
    CDS_NOTAS_FISCAISNFI_TOTBASEDECALCULO: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTICMS: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTBASEST: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTICMSST: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTVALOR_FRETE: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTVALOR_SEGURO: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTOUTRASDESP: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTVALORIPI: TFloatField;
    CDS_NOTAS_FISCAISNFI_TOTISS: TFloatField;
    CDS_NOTAS_FISCAISNFI_DADOSADICIONAIS: TMemoField;
    CDS_NOTAS_FISCAISNFI_NUMERO: TIntegerField;
    CDS_NOTAS_FISCAISNFI_ALIQUOTAISS: TFloatField;
    CDS_SAIDA_SERVICOSSAD_IDFDOC: TIntegerField;
    CDS_SAIDA_SERVICOSSAS_SEQITEM: TSmallintField;
    CDS_SAIDA_SERVICOSSAS_IDFSERVICO: TIntegerField;
    CDS_SAIDA_SERVICOSSAS_PRETAB: TFloatField;
    CDS_SAIDA_SERVICOSSAS_PREVEN: TFloatField;
    CDS_SAIDA_SERVICOSSAS_QUANTI: TFloatField;
    CDS_SAIDA_SERVICOSSAS_CANCEL: TStringField;
    CDS_SAIDA_SERVICOSSAS_ISS: TStringField;
    CDS_SAIDA_SERVICOSSAS_GARANTIA: TIntegerField;
    CDS_SAIDA_SERVICOSSAS_CODHISTORICO: TStringField;
    CDS_SAIDA_SERVICOSSAS_IDFNOTA: TIntegerField;
    CDS_SAIDA_SERVICOSSAS_PREBRU: TFloatField;
    CDS_SAIDA_SERVICOSSAS_DESCRICAO: TMemoField;
    ZUpNotasFiscais: TZUpdateSQL;
    ZSaidaDocumento: TZQuery;
    ZUpdateSaidaDocumento: TZUpdateSQL;
    DSP_SAIDA_DOCUMENTO: TDataSetProvider;
    CDS_SAIDA_DOCUMENTO: TClientDataSet;
    ZQuerySaiServicosSAD_IDFDOC: TIntegerField;
    ZQuerySaiServicosSAS_SEQITEM: TSmallintField;
    ZQuerySaiServicosSAS_IDFSERVICO: TIntegerField;
    ZQuerySaiServicosSAS_PRETAB: TFloatField;
    ZQuerySaiServicosSAS_PREVEN: TFloatField;
    ZQuerySaiServicosSAS_QUANTI: TFloatField;
    ZQuerySaiServicosSAS_CANCEL: TStringField;
    ZQuerySaiServicosSAS_ISS: TStringField;
    ZQuerySaiServicosSAS_GARANTIA: TIntegerField;
    ZQuerySaiServicosSAS_CODHISTORICO: TStringField;
    ZQuerySaiServicosSAS_IDFNOTA: TIntegerField;
    ZQuerySaiServicosSAS_PREBRU: TFloatField;
    ZQuerySaiServicosSAS_DESCRICAO: TMemoField;
    CDS_UNIDADE: TClientDataSet;
    DSP_UNIDADE: TDataSetProvider;
    ZUnidade: TZQuery;
    CDS_UNIDADEUNI_CODIGO: TStringField;
    CDS_UNIDADEUNI_DESCRICAO: TStringField;
    ZSaidaDocumentoSAD_IDFDOC: TIntegerField;
    ZSaidaDocumentoSAD_DOCUME: TStringField;
    ZSaidaDocumentoSAD_DATAVE: TDateField;
    ZSaidaDocumentoSAD_TIPDOC: TStringField;
    ZSaidaDocumentoSAD_CODCAI: TSmallintField;
    ZSaidaDocumentoSAD_IDFEMPRESA: TSmallintField;
    ZSaidaDocumentoSAD_CODCFO: TStringField;
    ZSaidaDocumentoSAD_CODVEN: TStringField;
    ZSaidaDocumentoSAD_ORCAME: TStringField;
    ZSaidaDocumentoSAD_PLACA: TStringField;
    ZSaidaDocumentoSAD_KM: TIntegerField;
    ZSaidaDocumentoSAD_CANCELADO: TStringField;
    ZSaidaDocumentoSAD_CODCLI: TIntegerField;
    ZSaidaDocumentoSAD_USUARIO: TStringField;
    ZSaidaDocumentoSAD_TIPOCANCEL: TStringField;
    ZSaidaDocumentoSAD_INTORCA: TIntegerField;
    ZSaidaDocumentoSAD_CUPOMSTATUS: TStringField;
    ZSaidaDocumentoSAD_DATAREG: TDateTimeField;
    ZSaidaDocumentoSAD_USUALTER: TStringField;
    ZSaidaDocumentoSAD_DATAALTER: TDateTimeField;
    ZSaidaDocumentoSAD_DESCONTO_TOTAL: TFloatField;
    CDS_SAIDA_DOCUMENTOSAD_IDFDOC: TIntegerField;
    CDS_SAIDA_DOCUMENTOSAD_DOCUME: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_DATAVE: TDateField;
    CDS_SAIDA_DOCUMENTOSAD_TIPDOC: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_CODCAI: TSmallintField;
    CDS_SAIDA_DOCUMENTOSAD_IDFEMPRESA: TSmallintField;
    CDS_SAIDA_DOCUMENTOSAD_CODCFO: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_CODVEN: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_ORCAME: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_PLACA: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_KM: TIntegerField;
    CDS_SAIDA_DOCUMENTOSAD_CANCELADO: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_CODCLI: TIntegerField;
    CDS_SAIDA_DOCUMENTOSAD_USUARIO: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_TIPOCANCEL: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_INTORCA: TIntegerField;
    CDS_SAIDA_DOCUMENTOSAD_CUPOMSTATUS: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_DATAREG: TDateTimeField;
    CDS_SAIDA_DOCUMENTOSAD_USUALTER: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_DATAALTER: TDateTimeField;
    CDS_SAIDA_DOCUMENTOSAD_DESCONTO_TOTAL: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_IDFDOC: TIntegerField;
    CDS_SAIDA_PRODUTOSSAI_SEQITEM: TSmallintField;
    CDS_SAIDA_PRODUTOSSAI_IDFITEM: TIntegerField;
    CDS_SAIDA_PRODUTOSSAI_PRECOM: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_PRECUS: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_PRETAB: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_PREVEN: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_QUANTI: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_CANCEL: TStringField;
    CDS_SAIDA_PRODUTOSSAI_GARANTIA: TIntegerField;
    CDS_SAIDA_PRODUTOSSAI_EMPRESAIDF: TSmallintField;
    CDS_SAIDA_PRODUTOSSAI_PROSER: TStringField;
    CDS_SAIDA_PRODUTOSSAI_SERIAL: TStringField;
    CDS_SAIDA_PRODUTOSSAI_CODHISTORICO: TStringField;
    CDS_SAIDA_PRODUTOSNFI_IDFNOTA: TIntegerField;
    CDS_SAIDA_PRODUTOSSAI_DATHORA: TDateTimeField;
    CDS_SAIDA_PRODUTOSSAI_PREBRU: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_DESCRICAO: TStringField;
    ZQuerySaiProdutosSAI_IDFDOC: TIntegerField;
    ZQuerySaiProdutosSAI_DESCRICAO: TStringField;
    ZQuerySaiProdutosSAI_SEQITEM: TSmallintField;
    ZQuerySaiProdutosSAI_IDFITEM: TIntegerField;
    ZQuerySaiProdutosSAI_PRECOM: TFloatField;
    ZQuerySaiProdutosSAI_PRECUS: TFloatField;
    ZQuerySaiProdutosSAI_PRETAB: TFloatField;
    ZQuerySaiProdutosSAI_PREVEN: TFloatField;
    ZQuerySaiProdutosSAI_QUANTI: TFloatField;
    ZQuerySaiProdutosSAI_CANCEL: TStringField;
    ZQuerySaiProdutosSAI_GARANTIA: TIntegerField;
    ZQuerySaiProdutosSAI_EMPRESAIDF: TSmallintField;
    ZQuerySaiProdutosSAI_PROSER: TStringField;
    ZQuerySaiProdutosSAI_SERIAL: TStringField;
    ZQuerySaiProdutosSAI_CODHISTORICO: TStringField;
    ZQuerySaiProdutosNFI_IDFNOTA: TIntegerField;
    ZQuerySaiProdutosSAI_DATHORA: TDateTimeField;
    ZQuerySaiProdutosSAI_PREBRU: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_TOTAL: TFloatField;
    CDS_ESTOQUE_PRODUTOESP_IDFCOD: TIntegerField;
    CDS_ESTOQUE_PRODUTOESP_CODIGO: TStringField;
    CDS_ESTOQUE_PRODUTOESP_DESCRI: TStringField;
    CDS_ESTOQUE_PRODUTOESP_REFERE: TStringField;
    CDS_ESTOQUE_PRODUTOESP_DATCAD: TDateField;
    CDS_ESTOQUE_PRODUTOESP_ATIVO: TStringField;
    CDS_ESTOQUE_PRODUTOESP_SECCOD: TStringField;
    CDS_ESTOQUE_PRODUTOESP_SUBCOD: TStringField;
    CDS_ESTOQUE_PRODUTOESP_MARCOD: TStringField;
    CDS_ESTOQUE_PRODUTOESP_CONTROLE: TStringField;
    CDS_ESTOQUE_PRODUTOESP_COMPLE: TStringField;
    CDS_ESTOQUE_PRODUTOESP_TIPPRO: TStringField;
    CDS_ESTOQUE_PRODUTOESP_COLCOD: TIntegerField;
    CDS_ESTOQUE_PRODUTOESP_TABTAMANHOS: TSmallintField;
    CDS_ESTOQUE_PRODUTOESP_VALIDADE: TStringField;
    CDS_ESTOQUE_PRODUTOESP_LOTE: TStringField;
    CDS_ESTOQUE_PRODUTOESP_CODBAR: TStringField;
    CDS_ESTOQUE_PRODUTOUNI_CODIGO: TStringField;
    ZQuerySaiProdutosSAI_CODREF: TStringField;
    CDS_SAIDA_PRODUTOSSAI_CODREF: TStringField;
    ZSQLConsulta: TZQuery;
    ZQuerySaiServicosSAS_SEVICOCOD: TStringField;
    CDS_SAIDA_SERVICOSSAS_SEVICOCOD: TStringField;
    ZEntrada_SerialENS_IDFDOCUMENTO: TIntegerField;
    ZEntrada_SerialENS_IDFITEMDOCUM: TSmallintField;
    ZEntrada_SerialENS_SERIAL: TStringField;
    ZEntrada_SerialENS_QUANTIDADE: TFloatField;
    ZEntrada_SerialENS_EMPRESACODIGO: TSmallintField;
    ZEntrada_SerialENS_IDFPRODUTO: TIntegerField;
    ZEntrada_SerialENS_CANCELADO: TStringField;
    CDS_ESTOQUE_PRODUTOESP_COMISSAO: TFloatField;
    CDS_ESTOQUE_PRODUTOESP_UNIEMB: TStringField;
    CDS_ESTOQUE_PRODUTOESP_QTDEMB: TFloatField;
    CDS_ESTOQUE_PRODUTOESP_PESOUNITARIO: TFloatField;
    CDS_PRODUTO_SIMILAR: TClientDataSet;
    CDS_PRODUTO_REFERENCIA: TClientDataSet;
    DSP_PRODUTO_REFERENCIA: TDataSetProvider;
    DSP_PRODUTO_SIMILAR: TDataSetProvider;
    ZQryPRODUTO_REFERENCIA: TZQuery;
    ZQryPRODUTO_SIMILAR: TZQuery;
    ZUpdatePRODUTO_REFERENCIA: TZUpdateSQL;
    ZUpdatePRODUTO_SIMILAR: TZUpdateSQL;
    ZQryPRODUTO_REFERENCIAPRR_ID: TIntegerField;
    ZQryPRODUTO_REFERENCIAPRR_PRODUTOIDF: TIntegerField;
    ZQryPRODUTO_REFERENCIAPRR_NOME_REF: TStringField;
    CDS_PRODUTO_REFERENCIAPRR_ID: TIntegerField;
    CDS_PRODUTO_REFERENCIAPRR_PRODUTOIDF: TIntegerField;
    CDS_PRODUTO_REFERENCIAPRR_NOME_REF: TStringField;
    ZQryPRODUTO_SIMILARPRR_ID: TIntegerField;
    ZQryPRODUTO_SIMILARPRS_PRODUTO: TIntegerField;
    ZQryPRODUTO_SIMILARTIPO: TStringField;
    CDS_PRODUTO_SIMILARPRR_ID: TIntegerField;
    CDS_PRODUTO_SIMILARPRS_PRODUTO: TIntegerField;
    CDS_PRODUTO_SIMILARTIPO: TStringField;
    ZSaidaDocumentoSAD_NFE: TIntegerField;
    CDS_SAIDA_DOCUMENTOSAD_NFE: TIntegerField;
    ZRO_NFE: TZReadOnlyQuery;
    ZNotasFiscaisNFI_IDF: TIntegerField;
    ZNotasFiscaisNFI_CONDICOESPAGAMENTO: TStringField;
    ZNotasFiscaisNFI_EMISSAO: TDateTimeField;
    ZNotasFiscaisNFI_DATAENTRADASAIDA: TDateField;
    ZNotasFiscaisNFI_HORAENTRADASAIDA: TTimeField;
    ZNotasFiscaisNFI_TIPONOTA: TStringField;
    ZNotasFiscaisNFI_TIPOFRETE: TStringField;
    ZNotasFiscaisNFI_TOTBASEDECALCULO: TFloatField;
    ZNotasFiscaisNFI_TOTICMS: TFloatField;
    ZNotasFiscaisNFI_TOTBASEST: TFloatField;
    ZNotasFiscaisNFI_TOTICMSST: TFloatField;
    ZNotasFiscaisNFI_TOTVALOR_FRETE: TFloatField;
    ZNotasFiscaisNFI_TOTVALOR_SEGURO: TFloatField;
    ZNotasFiscaisNFI_TOTOUTRASDESP: TFloatField;
    ZNotasFiscaisNFI_TOTVALORIPI: TFloatField;
    ZNotasFiscaisNFI_TOTISS: TFloatField;
    ZNotasFiscaisNFI_DADOSADICIONAIS: TMemoField;
    ZNotasFiscaisNFI_NUMERO: TIntegerField;
    ZNotasFiscaisNFI_ALIQUOTAISS: TFloatField;
    ZNotasFiscaisNFI_SERIE: TStringField;
    ZNotasFiscaisNFI_FORMAPAG: TStringField;
    CDS_NOTAS_FISCAISNFI_SERIE: TStringField;
    CDS_NOTAS_FISCAISNFI_FORMAPAG: TStringField;
    CDS_NOTAS_TRANSPORTE: TClientDataSet;
    DSP_NOTAS_TRANSPORTE: TDataSetProvider;
    ZQryNOTAS_TRANSPORTE: TZQuery;
    ZUpdateNOTAS_TRANSPORTE: TZUpdateSQL;
    ZQryNOTAS_TRANSPORTENFI_IDF: TIntegerField;
    ZQryNOTAS_TRANSPORTENFT_PLACA: TStringField;
    ZQryNOTAS_TRANSPORTENFT_UFPLACA: TStringField;
    ZQryNOTAS_TRANSPORTENFT_QUANTIDADE: TStringField;
    ZQryNOTAS_TRANSPORTENFT_ESPECIE: TStringField;
    ZQryNOTAS_TRANSPORTENFT_MARCA: TStringField;
    ZQryNOTAS_TRANSPORTENFT_NUMERO: TStringField;
    ZQryNOTAS_TRANSPORTENFT_PESOBRUTO: TStringField;
    ZQryNOTAS_TRANSPORTENFT_PESOLIQUIDO: TStringField;
    ZQryNOTAS_TRANSPORTENFT_TRANSPORTE: TIntegerField;
    CDS_NOTAS_TRANSPORTENFI_IDF: TIntegerField;
    CDS_NOTAS_TRANSPORTENFT_PLACA: TStringField;
    CDS_NOTAS_TRANSPORTENFT_UFPLACA: TStringField;
    CDS_NOTAS_TRANSPORTENFT_QUANTIDADE: TStringField;
    CDS_NOTAS_TRANSPORTENFT_ESPECIE: TStringField;
    CDS_NOTAS_TRANSPORTENFT_MARCA: TStringField;
    CDS_NOTAS_TRANSPORTENFT_NUMERO: TStringField;
    CDS_NOTAS_TRANSPORTENFT_PESOBRUTO: TStringField;
    CDS_NOTAS_TRANSPORTENFT_PESOLIQUIDO: TStringField;
    CDS_NOTAS_TRANSPORTENFT_TRANSPORTE: TIntegerField;
    ZQuerySaiProdutosSAI_ICMS: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_ICMS: TFloatField;
    ZSaidaDocumentoSAD_TRANSFERENCIA: TStringField;
    CDS_SAIDA_DOCUMENTOSAD_TRANSFERENCIA: TStringField;
    ZNotasFiscaisNFI_CFOP: TStringField;
    CDS_NOTAS_FISCAISNFI_CFOP: TStringField;
    CDS_ESTOQUE_EMPRESAESE_DESCONTOMAX: TFloatField;
    ZEntrada_ProdutosENP_PER_IPI: TFloatField;
    ZEntrada_ProdutosENP_PER_FRETE: TFloatField;
    ZEntrada_ProdutosENP_PER_MARVAREJO: TFloatField;
    ZEntrada_ProdutosENP_PER_MARATACADO: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PER_IPI: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PER_FRETE: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PER_MARVAREJO: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PER_MARATACADO: TFloatField;
    ZEstoque_ProdutoESP_IDFCOD: TIntegerField;
    ZEstoque_ProdutoESP_CODIGO: TStringField;
    ZEstoque_ProdutoESP_DESCRI: TStringField;
    ZEstoque_ProdutoESP_REFERE: TStringField;
    ZEstoque_ProdutoESP_DATCAD: TDateField;
    ZEstoque_ProdutoESP_ATIVO: TStringField;
    ZEstoque_ProdutoESP_SECCOD: TStringField;
    ZEstoque_ProdutoESP_SUBCOD: TStringField;
    ZEstoque_ProdutoESP_MARCOD: TStringField;
    ZEstoque_ProdutoESP_CONTROLE: TStringField;
    ZEstoque_ProdutoESP_COMPLE: TStringField;
    ZEstoque_ProdutoESP_TIPPRO: TStringField;
    ZEstoque_ProdutoESP_COLCOD: TIntegerField;
    ZEstoque_ProdutoESP_TABTAMANHOS: TSmallintField;
    ZEstoque_ProdutoESP_VALIDADE: TStringField;
    ZEstoque_ProdutoESP_LOTE: TStringField;
    ZEstoque_ProdutoESP_CODBAR: TStringField;
    ZEstoque_ProdutoUNI_CODIGO: TStringField;
    ZEstoque_ProdutoESP_PESOUNITARIO: TFloatField;
    ZEstoque_ProdutoESP_COMISSAO: TFloatField;
    ZEstoque_ProdutoESP_UNIEMB: TStringField;
    ZEstoque_ProdutoESP_QTDEMB: TFloatField;
    ZEstoque_ProdutoESP_NCM: TIntegerField;
    CDS_ESTOQUE_PRODUTOESP_NCM: TIntegerField;
    ZEstoque_EmpresaESE_IDFCOD: TIntegerField;
    ZEstoque_EmpresaESE_EMPCOD: TSmallintField;
    ZEstoque_EmpresaESE_PRECOM: TFloatField;
    ZEstoque_EmpresaESE_PRECUS: TFloatField;
    ZEstoque_EmpresaESE_PREVEN: TFloatField;
    ZEstoque_EmpresaESE_PREATA: TFloatField;
    ZEstoque_EmpresaESE_LOCAL: TStringField;
    ZEstoque_EmpresaESE_SITCOD: TStringField;
    ZEstoque_EmpresaESE_IPICOD: TStringField;
    ZEstoque_EmpresaESE_PISCOFINS: TStringField;
    ZEstoque_EmpresaESE_PROMOCAO: TStringField;
    ZEstoque_EmpresaESE_SALDO: TFloatField;
    ZEstoque_EmpresaESE_QTDATACADO: TFloatField;
    ZEstoque_EmpresaESE_RESERVADO: TFloatField;
    ZEstoque_EmpresaESE_DESCONTOMAX: TFloatField;
    ZEntrada_DocumentoEND_SAIDA_TRANSFERENCIA: TIntegerField;
    ZEntrada_DocumentoEND_NFE: TIntegerField;
    CDS_ENTRADA_DOCUMENTOEND_SAIDA_TRANSFERENCIA: TIntegerField;
    CDS_ENTRADA_DOCUMENTOEND_NFE: TIntegerField;
    ZQuerySaiProdutosSAI_IPI: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_IPI: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_VICMS: TCurrencyField;
    CDS_SAIDA_PRODUTOSSAI_VIPI: TCurrencyField;
    ZQuerySaiProdutosSAI_MVA: TFloatField;
    ZQuerySaiProdutosSAI_ICMSUB: TFloatField;
    ZQuerySaiProdutosSAI_VALSUB: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_MVA: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_ICMSUB: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_VALSUB: TFloatField;
    CDS_SAIDA_PRODUTOSSAI_BASEICMSST: TCurrencyField;
    CDS_SAIDA_PRODUTOSSAI_TOTALITEM: TCurrencyField;
    ZEntrada_ProdutosENP_PER_ICM: TFloatField;
    CDS_ENTRADA_PRODUTOENP_PER_ICM: TFloatField;
    procedure SQLC_ProdutoESP_DATCADSetText(Sender: TField;
      const Text: String);
    procedure CDS_ESTOQUE_PRODUTOAfterCancel(DataSet: TDataSet);
    procedure CDS_ESTOQUE_PRODUTOAfterClose(DataSet: TDataSet);
    procedure CDS_ESTOQUE_PRODUTOAfterRefresh(DataSet: TDataSet);
    procedure CDS_SAIDA_PRODUTOSCalcFields(DataSet: TDataSet);
    procedure CDS_SAIDA_DOCUMENTOAfterOpen(DataSet: TDataSet);
    procedure CDS_SAIDA_DOCUMENTOBeforeClose(DataSet: TDataSet);
    procedure CDS_SAIDA_SERVICOSAfterInsert(DataSet: TDataSet);
    procedure CDS_SAIDA_DOCUMENTOAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure CDS_SAIDA_DOCUMENTORecon(
      DataSet: TCustomClientDataSet; E: EReconcileError;
      UpdateKind: TUpdateKind; var Action: TReconcileAction);
    procedure CDS_ESTOQUE_PRODUTOAfterInsert(DataSet: TDataSet);
    procedure CDS_ESTOQUE_EMPRESAAfterInsert(DataSet: TDataSet);
    procedure CDS_ESTOQUE_SERIALBeforeOpen(DataSet: TDataSet);
    procedure CDS_ENTRADA_DOCUMENTOEND_DATAENTRADASetText(Sender: TField;
      const Text: String);
    procedure CDS_ENTRADA_DOCUMENTOEND_DATAEMISSAOSetText(Sender: TField;
      const Text: String);
    procedure CDS_NOTAS_FISCAISAfterOpen(DataSet: TDataSet);
    procedure CDS_NOTAS_FISCAISBeforeClose(DataSet: TDataSet);
    procedure CDS_SAIDA_DOCUMENTONewRecord(DataSet: TDataSet);
    procedure CDS_SAIDA_SERVICOSAfterOpen(DataSet: TDataSet);
   { procedure ConexaoEstoqueBeforeConnect(Sender: TObject); }
  private
    FIdfProduto   : Integer;
    FNovaSaida: boolean;
    function CodigoEmpresaPessoa(EmpCod: integer): integer;
    function CodigoPessoaEmpresa(PesIdf: integer): integer;
    procedure SetNovaSaida(const Value: boolean);
  public
    property IdfProduto   : Integer read FIdfProduto write FIdfProduto;
    property NovaSaida    : boolean read FNovaSaida write SetNovaSaida;
    procedure Devolucao(SaidaDocumento : integer; SaidaItens : IntegerArray);
  end;

var
  DtMEstoque   : TDtMEstoque;

implementation

uses DateUtils;
            
{$R *.dfm}

procedure TDtMEstoque.SQLC_ProdutoESP_DATCADSetText(Sender: TField;
  const Text: String);
begin
  DtmGeral.TClasseGeral.ValidarCampoData( Sender, Text );
end;
      
procedure TDtMEstoque.CDS_ESTOQUE_PRODUTOAfterCancel(DataSet: TDataSet);
begin
  CDS_ESTOQUE_EMPRESA.Cancel;
end;

procedure TDtMEstoque.CDS_ESTOQUE_PRODUTOAfterClose(DataSet: TDataSet);
begin
  CDS_ESTOQUE_EMPRESA.Close;
end;

procedure TDtMEstoque.CDS_ESTOQUE_PRODUTOAfterRefresh(DataSet: TDataSet);
begin
  CDS_ESTOQUE_EMPRESA.Refresh;
end;

procedure TDtMEstoque.CDS_SAIDA_PRODUTOSCalcFields(DataSet: TDataSet);
begin
  with DataSet do begin
    FieldByName('SAI_TOTAL').AsCurrency := FieldByName('SAI_QUANTI').AsFloat *
                                           FieldByName('SAI_PREVEN').AsCurrency;
    if FieldByName('SAI_ICMS').AsCurrency > 0 then
      FieldByName('SAI_VICMS').AsCurrency := FieldByName('SAI_TOTAL').AsCurrency *
                                             FieldByName('SAI_ICMS').AsCurrency /100;
    if FieldByName('SAI_IPI').AsCurrency > 0 then
      FieldByName('SAI_VIPI').AsCurrency := FieldByName('SAI_TOTAL').AsCurrency *
                                            FieldByName('SAI_IPI').AsCurrency /100;

    FieldByName('SAI_TOTALITEM').AsCurrency := FieldByName('SAI_TOTAL').AsFloat +
                                               FieldByName('SAI_VIPI').AsFloat +
                                               FieldByName('SAI_VALSUB').AsFloat;
  end;
end;

procedure TDtMEstoque.CDS_SAIDA_DOCUMENTOAfterOpen(DataSet: TDataSet);
begin
  with CDS_SAIDA_PRODUTOS do begin
    if not Active then begin
      Params.ParamByName('SAD_IDFDOC').AsInteger := DataSet.FieldByName('SAD_IDFDOC').AsInteger;
      Open;
    end;
  end;
  with CDS_SAIDA_SERVICOS do begin
    if not Active then begin
      Params.ParamByName('SAD_IDFDOC').AsInteger := DataSet.FieldByName('SAD_IDFDOC').AsInteger;
      Open;
    end;
  end;
end;

procedure TDtMEstoque.CDS_SAIDA_DOCUMENTOBeforeClose(DataSet: TDataSet);
begin
  with CDS_SAIDA_PRODUTOS do begin
    if Active then
      Close;
  end;
  with CDS_SAIDA_SERVICOS do begin
    if Active then
      Close;
  end;
end;

procedure TDtMEstoque.CDS_SAIDA_SERVICOSAfterInsert(DataSet: TDataSet);
begin
  DataSet.FieldByName('SAS_CANCEL').AsString := 'N';
end;

procedure TDtMEstoque.CDS_SAIDA_DOCUMENTOAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  with CDS_SAIDA_PRODUTOS do begin
    if Active then
      ApplyUpdates(0);
  end;
  with CDS_SAIDA_SERVICOS do begin
    if Active then
      ApplyUpdates(0);
  end;
  if CDS_ENTRADA_DOCUMENTO.ChangeCount > 0 then
    CDS_ENTRADA_DOCUMENTO.ApplyUpdates(-1);
  if CDS_ENTRADA_PRODUTO.ChangeCount > 0 then
    CDS_ENTRADA_PRODUTO.ApplyUpdates(-1);
  DtmGeral.ZConexaoBanco.Disconnect;
  DtmGeral.ZConexaoBanco.Connect;
end;

procedure TDtMEstoque.CDS_SAIDA_DOCUMENTORecon(
  DataSet: TCustomClientDataSet; E: EReconcileError;
  UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
  Action := HandleReconcileError(DataSet,UpdateKind,E);
end;

procedure TDtMEstoque.CDS_ESTOQUE_PRODUTOAfterInsert(DataSet: TDataSet);
begin
  with DataSet do begin
    FieldByName('ESP_ATIVO').AsString := 'S';
  end;
end;

procedure TDtMEstoque.CDS_ESTOQUE_EMPRESAAfterInsert(DataSet: TDataSet);
begin
  with DataSet do begin
    FieldByName('ESE_PISCOFINS').AsString := 'N';
    FieldByName('ESE_PROMOCAO').AsString := 'N';
  end;
end;

procedure TDtMEstoque.CDS_ESTOQUE_SERIALBeforeOpen(DataSet: TDataSet);
begin
  CDS_ESTOQUE_SERIAL.Params[0].AsInteger := CDS_ESTOQUE_PRODUTO.FieldByName('ESP_IDFCOD').AsInteger;
end;

procedure TDtMEstoque.CDS_ENTRADA_DOCUMENTOEND_DATAENTRADASetText(
  Sender: TField; const Text: String);
begin
  DtmGeral.TClasseGeral.ValidarCampoData( Sender, Text );
end;

procedure TDtMEstoque.CDS_ENTRADA_DOCUMENTOEND_DATAEMISSAOSetText(
  Sender: TField; const Text: String);
begin
  DtmGeral.TClasseGeral.ValidarCampoData( Sender, Text );
end;

procedure TDtMEstoque.CDS_NOTAS_FISCAISAfterOpen(DataSet: TDataSet);
begin
  with CDS_NOTAS_TRANSPORTE do begin
    Close;
    Params[0].AsInteger := DataSet.FieldByName('NFI_IDF').AsInteger;
    Open;
  end;
end;

procedure TDtMEstoque.CDS_NOTAS_FISCAISBeforeClose(DataSet: TDataSet);
begin
  CDS_NOTAS_TRANSPORTE.Close;
end;

procedure TDtMEstoque.Devolucao(SaidaDocumento: integer;
  SaidaItens: IntegerArray);
begin

end;

function TDtMEstoque.CodigoEmpresaPessoa(EmpCod : integer) : integer;
var
  cnpj : string;
begin
  with DtmGeral.SQL_QUERY do begin
    Active := false;
    SQL.Clear;
    SQL.Add('SELECT EMP_CNPJ FROM EMPRESAS WHERE EMP_CODIGO = :EMP_CODIGO');
    Params[0].AsInteger := EmpCod;
    Open;
    cnpj := fieldByName('EMP_CNPJ').AsString;
    Close;
    SQL.Clear;
    SQL.Add('SELECT PES_IDFCOD FROM PESSOAS WHERE PES_CPFCNPJ = :PES_CPFCNPJ');
    Params[0].AsString := cnpj;
    Open;
    Result := FieldByName('PES_IDFCOD').AsInteger;  
    Close;
  end;
end;

function TDtMEstoque.CodigoPessoaEmpresa(PesIdf : integer) : integer;
var
  cnpj : string;
begin
  with DtmGeral.SQL_QUERY do begin
    Active := false;
    SQL.Clear;
    SQL.Add('SELECT PES_CPFCNPJ FROM PESSOAS WHERE PES_IDFCOD = :PES_IDFCOD');
    Params[0].AsInteger := PesIdf;
    Open;
    cnpj := FieldByName('PES_CPFCNPJ').AsString;
    Close;
    SQL.Clear;
    SQL.Add('SELECT EMP_CODIGO FROM EMPRESAS WHERE EMP_CNPJ = :EMP_CNPJ');
    Params[0].AsString := cnpj;
    Open;
    Result := FieldByName('EMP_CODIGO').AsInteger;
    Close;
  end;
end;

procedure TDtMEstoque.SetNovaSaida(const Value: boolean);
begin
  FNovaSaida := Value;
end;

procedure TDtMEstoque.CDS_SAIDA_DOCUMENTONewRecord(DataSet: TDataSet);
begin
  DataSet.FieldByName('SAD_TRANSFERENCIA').AsString := 'N';
end;

procedure TDtMEstoque.CDS_SAIDA_SERVICOSAfterOpen(DataSet: TDataSet);
Var I:integer;
begin
  for i := 0 to CDS_SAIDA_SERVICOS.Fields.Count-1 do
    if CDS_SAIDA_SERVICOS.Fields[i].IsBlob then
      CDS_SAIDA_SERVICOS.Fields[i].OnGetText := DtmGeral.OnMyGetText;
end;

end.
